#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
#打包 pyinstaller -F kcw.py
import getopt,platform,importlib
from kcweb.common import *
PATH=os.getcwd()
sys.path.append(PATH)
try:
    opts, args = getopt.getopt(sys.argv[1:], "h", ["app=","modular=","plug=","user=","pwd=","install","uninstall","pack","upload",
        "host=","port=","server=",
        "help"])
    # print(opts)
    appname='app'  #应用名
    modular='api' #模块名
    username=''
    password=''
    plug=None  #插件名
    host='0.0.0.0'
    port=39001

    i=0
    for data in opts:
        i+=1
        # # 启动web服务
        # if '-host' == data[0]:
        #     host=data[1]
        # elif '--port' == data[0]:
        #     port=data[1]
        # elif '--server' == data[0]:
        #     from kcweb import web
        #     appname=data[1]
        #     application = __import__(appname)
        #     app=web(__name__,application)
        #     if __name__ == "__main__":
        #         app.run(host=host,port=port)
                
        #应用、模块、插件
        if '--app' == data[0]:
            appname=data[1]
        elif '--modular' == data[0]:
            modular=data[1]
        elif '--plug' == data[0]:
            plug=data[1]
        elif '--user' == data[0]:
            username=data[1]
        elif '--pwd' == data[0]:
            password=data[1]
        elif '--install' == data[0]:#插入 应用、模块、插件
            if appname and modular:
                server=create(appname,modular)
                t=server.installmodular(cli=True)
                if not plug:
                    if '应用创建成功' in t[1]:
                        if "Windows" in platform.platform():
                            pythonname="python"
                        else:
                            pythonname="python3"
                        print("创建应用成功，接下来在终端中执行："+pythonname+" server.py")
                    else:
                        print(t)
                if plug:
                    print(server.installplug(plug,cli=True))
        elif '--pack'==data[0]:#打包 模块、插件
            server=create(appname,modular)
            if plug:
                server.packplug(plug=plug)
                print("插件打包完成")
            else:
                server.packmodular()
                print("模块打包完成")
        elif '--upload'==data[0]:#上传 模块、插件
            server=create(appname,modular)
            if plug:
                server.packplug(plug=plug)
                print("插件上传结果",server.uploadplug(plug,username,password,cli=True))
            else:
                server.packmodular()
                print("模块上传结果",server.uploadmodular(username,password,cli=True))
                
        elif '--uninstall'==data[0]:#卸载 模块、插件
            server=create(appname,modular)
            if plug:
                server.uninstallplug(plug=plug)
                print("插件卸载完成")
            else:
                server.uninstallmodular()
                print("模块卸载完成")
        
        
        #帮助
        elif '--help' == data[0]:
            try:
                cs=sys.argv[i+1]
            except:
                cs=None
            if cs == None:
                print("\n有关某个命令的详细信息，请键入 kcw --help 命令名")
                print("app                指定一个应用")
                print("modular            指定一个模块")
                print("plug               指定一个插件")
                print("user               指定一个账户")
                print("pwd                指定一个密码")
                print("install            执行安装操作")
                print("upload             执行上传操作")
                print("uninstall          执行卸载操作\n")

                # print("host               绑定一个ip")
                # print("port               绑定一个端口")
                # print("server             启动一个web服务\n")
            elif 'app' == cs or 'modular' == cs or 'plug' == cs:
                print("\nkcw --app app --modular api --plug plug --install")
                print("初始化一个web应用示例,通常情况下app、modular、plug、install同时使用")
                print("app、modular、plug并不是必须的，如果要使用默认值，您可以使用下面简短的命令来安装")
                print("kcw install\n")
            elif 'install' == cs:
                print("\n使用kcw --install可以安装一个默认的应用")
                print("install 还可以用户作安装模块或插件")
                print("kcw --app app --modular base --install  在app应用中安装一个base模块")
                print("kcw --app app --modular base --plug plug1 --install  在app应用base模块中安装一个plug1插件\n")
            elif 'pack' == cs:
                print("\n使用kcw --app app --modular api --pack可以打包一个模块")
                print("\n使用kcw --app app --modular api --plug plug1 --pack可以打包一个插件")
            elif 'upload' == cs or 'user' == cs or 'pwd' == cs:
                print("\n使用 kcw --app app --modular api --user 181*** --pwd pwd123 --upload 上传一个api模块")
                print("使用 kcw --app app --modular api --plug plug1 --user 181*** --pwd pwd123 --upload 向api模块中上传一个plug1插件\n")
            elif 'uninstall' == cs:
                print("\n使用kcw --app app --modular api --uninstall可以卸载一个模块")
                print("\n使用kcw --app app --modular api --plug plug1 --uninstall可以卸载一个插件")
            # elif 'host' == cs or 'port' == cs or 'server' == cs:
            #     print("\nkcw --host 0.0.0.0 --port 39001 --server app")
            #     print("这是一组启动web应用相关的命令示例，通常情况下host、port以及server应同时使用")
            #     print("host默认值是：0.0.0.0 ， port默认值是：39001，如果您不需要对绑定的ip和端口进行修改，您可以执行下面简短的命令来启动web服务")
            #     print("kcw --server app\n")
except Exception as e:
    print(e)
